<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseTaintOperations (infer.Pulselib.PulseTaintOperations)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">Pulselib</a> &#x00BB; PulseTaintOperations</nav><header class="odoc-preamble"><h1>Module <code><span>Pulselib.PulseTaintOperations</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-call"><a href="#val-call" class="anchor"></a><code><span><span class="keyword">val</span> call : 
  <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulsePathContext/index.html#type-t">Pulselib.PulseDomainInterface.PathContext.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span>(<a href="../../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">call_was_unknown</span>:bool <span class="arrow">&#45;&gt;</span></span>
  <span><span><span>(<a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a>, <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a>)</span> <span class="xref-unresolved">IStdlib</span>.IStd.Either.t</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span><span><a href="../PulseValueOrigin/index.html#type-t">Pulselib.PulseBasicInterface.ValueOrigin.t</a>
    <a href="../../Absint/ProcnameDispatcher/Call/FuncArg/index.html#type-t">Absint.ProcnameDispatcher.Call.FuncArg.t</a></span>
    list</span> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a>
    <a href="../PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span></span></code></div><div class="spec-doc"><p>add sources and sinks coming from a particular call site</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-store"><a href="#val-store" class="anchor"></a><code><span><span class="keyword">val</span> store : 
  <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulsePathContext/index.html#type-t">Pulselib.PulseDomainInterface.PathContext.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">lhs</span>:<a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">rhs</span>:<span>(<a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> * <a href="../PulseValueOrigin/index.html#type-t">Pulselib.PulseBasicInterface.ValueOrigin.t</a> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a>
    <a href="../PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-load"><a href="#val-load" class="anchor"></a><code><span><span class="keyword">val</span> load : 
  <span><a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulsePathContext/index.html#type-t">Pulselib.PulseDomainInterface.PathContext.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">lhs</span>:<span>(<a href="../../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">rhs</span>:<a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a>
    <a href="../PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-taint_allocation"><a href="#val-taint_allocation" class="anchor"></a><code><span><span class="keyword">val</span> taint_allocation : 
  <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulsePathContext/index.html#type-t">Pulselib.PulseDomainInterface.PathContext.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">typ_desc</span>:<a href="../../IR/Typ/index.html#type-desc">IR.Typ.desc</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">alloc_desc</span>:string <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">allocator</span>:<span><a href="../PulseAttribute/index.html#type-allocator">Pulselib.PulseBasicInterface.Attribute.allocator</a> option</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span>(<a href="../PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a>
   * <a href="../PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a>
  * <span>(<a href="../PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a>
     * <a href="../PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-check_flows_wrt_sink"><a href="#val-check_flows_wrt_sink" class="anchor"></a><code><span><span class="keyword">val</span> check_flows_wrt_sink : 
  <span><a href="../PulsePathContext/index.html#type-t">Pulselib.PulseDomainInterface.PathContext.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">sink</span>:
    <span>(<a href="../PulseTaintItem/index.html#type-t">Pulselib.PulseBasicInterface.TaintItem.t</a>
     * <a href="../PulseTrace/index.html#type-t">Pulselib.PulseBasicInterface.Trace.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span class="label">source</span>:
    <span>(<a href="../PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a>
     * <a href="../PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a>
    <a href="../PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-taint_initial"><a href="#val-taint_initial" class="anchor"></a><code><span><span class="keyword">val</span> taint_initial : 
  <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> <span class="arrow">&#45;&gt;</span></span>
  <span><a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span class="arrow">&#45;&gt;</span></span>
  <a href="../PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dedup_reports"><a href="#val-dedup_reports" class="anchor"></a><code><span><span class="keyword">val</span> dedup_reports : 
  <span><span><span><span>(<span><span class="type-var">'a</span> <a href="../PulseExecutionDomain/index.html#type-base_t">Pulselib.PulseDomainInterface.ExecutionDomain.base_t</a></span>,
    <a href="../PulseAccessResult/index.html#type-error">Pulselib.PulseDomainInterface.AccessResult.error</a>)</span>
    <a href="../PulseDomainInterface/index.html#type-pulse_result">PulseDomainInterface.pulse_result</a></span>
    list</span> <span class="arrow">&#45;&gt;</span></span>
  <span><span><span>(<span><span class="type-var">'a</span> <a href="../PulseExecutionDomain/index.html#type-base_t">Pulselib.PulseDomainInterface.ExecutionDomain.base_t</a></span>,
    <a href="../PulseAccessResult/index.html#type-error">Pulselib.PulseDomainInterface.AccessResult.error</a>)</span>
    <a href="../PulseDomainInterface/index.html#type-pulse_result">PulseDomainInterface.pulse_result</a></span>
    list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-procedure_matches_source"><a href="#val-procedure_matches_source" class="anchor"></a><code><span><span class="keyword">val</span> procedure_matches_source : <span><a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div></div></body></html>
